package com.ikun.aimian.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ikun.aimian.model.dto.feedback.FeedbackQueryRequest;
import com.ikun.aimian.model.entity.Feedback;
import com.ikun.aimian.model.vo.FeedbackVO;

import javax.servlet.http.HttpServletRequest;

public interface FeedbackService extends IService<Feedback> {

    /**
     * 校验反馈数据
     *
     * @param feedback 反馈实体
     * @param add      是否为新增操作
     */
    void validFeedback(Feedback feedback, boolean add);

    /**
     * 获取查询条件
     *
     * @param queryRequest 反馈查询请求体
     * @return QueryWrapper
     */
    QueryWrapper<Feedback> getQueryWrapper(FeedbackQueryRequest queryRequest);

    /**
     * 将 Feedback 转换为 FeedbackVO（并补充用户和应用信息）
     *
     * @param feedback 反馈实体
     * @param request  HTTP 请求
     * @return 反馈视图对象
     */
    FeedbackVO getFeedbackVO(Feedback feedback, HttpServletRequest request);

    /**
     * 分页获取反馈视图对象
     *
     * @param feedbackPage 反馈分页对象
     * @param request      HTTP 请求
     * @return 分页后的 FeedbackVO
     */
    Page<FeedbackVO> getFeedbackVOPage(Page<Feedback> feedbackPage, HttpServletRequest request);
}
